Command procedures
The following procedures are provided in the Tcl library:
- auto_execok cmd
- Determines whether there is an executable file by the name
cmd. This command examines the directories in the current
search path (given by the
PATH
environment variable) to
see if there is an executable file named cmd in any of
those directories. If so, it returns 1; if not it returns 0.
auto_exec remembers information about previous
searches in an array named auto_execs; this avoids
the path search in future calls for the same cmd. The
command auto_reset may be used to force
auto_execok to forget its cached information.
- auto_load cmd
- This command attempts to load the definition for a Tcl command
named cmd. To do this, it searches an auto-load
path, which is a list of one or more directories. The auto-load path
is given by the global variable
$auto_path if it exists. If there is no
$auto_path variable, then the
TCLLIBPATH
environment variable is used, if it exists. Otherwise the auto-load
path consists of just the Tcl library directory. Within each
directory in the auto-load path there must be a file
tclIndex
that describes one or more commands defined in
that directory and a script to evaluate to load each of the commands.
The tclIndex
file should be generated with the
auto_mkindex command. If cmd is found in
an index file, then the appropriate script is evaluated to create the
command. The auto_load command returns 1 if
cmd was successfully created. The command returns 0 if
there was no index entry for cmd or if the script didn't
actually define cmd (e.g. because index information is out
of date). If an error occurs while processing the script, then that
error is returned. auto_load only reads the index
information once and saves it in the array
auto_index; future calls to
auto_load check for cmd in the array
rather than re-reading the index files. The cached index information
may be deleted with the command auto_reset. This will
force the next auto_load command to reload the index
database from disk.
- auto_mkindex dir pattern pattern ...
- Generates an index suitable for use by
auto_load. The command searches dir for
all files whose names match any of the pattern arguments
(matching is done with the glob command), generates
an index of all the Tcl command procedures defined in all the matching
files, and stores the index information in a file named
tclIndex in dir. For example, the command
auto_mkindex foo *.tcl
will read all the .tcl
files in subdirectory
foo
and generate a new index file
foo/tclIndex
.
Auto_mkindex parses the Tcl scripts in a
relatively unsophisticated way: if any line contains the word
proc as its first characters then it is assumed to be
a procedure definition and the next word of the line is taken as the
procedure's name. Procedure definitions that don't appear in this way
(e.g. they have spaces before the proc) will not be
indexed.
- auto_reset
- Destroys all the information cached by
auto_execok and auto_load. This
information will be re-read from disk the next time it is needed.
Auto_reset also deletes any procedures listed in the auto_load index, so that fresh copies of them will be loaded the next time that they're used.
- parray arrayName
- Prints on standard output the names and values of all the
elements in the array arrayName. arrayName
must be an array accessible to the caller of parray.
It may be either local or global.
- unknown cmd [ arg ... ]
- This procedure is invoked automatically by the Tcl interpreter
whenever the name of a command doesn't exist. The
unknown procedure receives as its arguments the name
and arguments of the missing command. Unknown first
calls auto_load to load the command. If this
succeeds, then it executes the original command with its original
arguments. If the auto-load fails then unknown calls
auto_execok to see if there is an executable file by
the name cmd. If so, it invokes the Tcl
exec command with cmd and all the
args as arguments. If cmd can't be
auto-executed, unknown checks to see if the command
was invoked at top-level and outside of any script. If so, then
unknown takes two additional steps. First, it
sees if cmd has one of the following three forms:
!!, !event, or
^old^new?^?. If so, then
unknown carries out history substitution in the same
way that csh would for these constructs. Second, and
last, unknown checks to see if cmd is a
unique abbreviation for an existing Tcl command. If so, it expands
the command name and executes the command with the original arguments.
If none of the above efforts has been able to execute the command,
unknown generates an error return. If the global
variable auto_noload is defined, then the auto-load
step is skipped. If the global variable auto_noexec
is defined then the auto-exec step is skipped. Under normal
circumstances the return value from unknown is the
return value from the command that was eventually executed.